﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CROSLAND.BL.BE;

namespace CROSLAND.DL.DALC
{
    public interface IPedidoDALC
    {
        /// Ejecuta la transacción Bapi_Salesorder_Createfromdat2 y retorna el numero de pedido generado en el parámetro de salida pNumPedido.
        /// </summary>
        /// <param name="pNumPedido">Parámetro de salida con el # de pedido</param>
        /// <param name="pObjPedido">Parámetro de entrada que contiene la información para grabar el pedido</param>
        /// <returns>Mensaje de Error o de # de Pedido</returns>
        string procesarPedido(out string pNumPedido, PedidoBE pObjPedido);
        PedidoBE leer(string pNumPedido, bool pLight);
        string modificar(out bool pOk, PedidoBE pObjPedido);
        List<DescuentoBE> calcularPrecios(PedidoBE pObjPedido, DetalleBE pItem, out string retval);
        StatusBE verStatus(string pNumPedido);
        List<EntregaBE> verEntrega(string pVbeln, string pvbtyp_n);
        List<SeguimientoBE> buscaDocumentos(string pNumPedido);
        List<CampañaBE> listaCampañas(string pOrgVta, string pCamp, string pCanal, string pTienda, string pPobla, DateTime pFecha, string pModelo, string pColor);
        List<PedidoBE> ListaPedidoVMS(string nroDoc, string nroLote, DateTime fechaI, DateTime fechaF, string nroPer, string orgVta, string canal, string tienda, string docRef, string nroMat, string nomCli, string nif, string codCli, string txtPos, string tipoDoc);
        List<PedidoBE> ListaFacturasVMS(string nroFac, string nroFolio, DateTime fechaI, DateTime fechaF, string codCli, string orgVta, string canal, string centro, string sector, string tienda, string codMat, string nroLote, string nroPer);
        List<PedidoBE> ListaFacturasRep(string nroFac, string nroFolio, DateTime fechaI, DateTime fechaF, string codCli, string orgVta, string canal, string centro, string sector, string tienda, string codMat, string nroLote, string nroPer);
        List<PedidoBE> ListaPedidoRep(string nroDoc, string nroLote, DateTime fechaI, DateTime fechaF, string nroPer, string orgVta, string canal, string tienda, string docRef, string nroMat, string nomCli, string nif, string codCli, string txtPos);
        List<string> RechazarPedido(DateTime fechaInicio, DateTime fechaFin, string orgVtas, string canal, string codCliente, string oficina, List<string> lstLote);
        string InsertPago(CabPagoBE objPago, List<DetPagosBE> lstPagos, List<DetPedFacBE> lstPedFac, out string tipoMensaje);
        Boolean reenumerar(int pfolio_old, int pfolio_new, string pcaja, string ptipo, string pnroPedido, out string nroPedido);
        List<string> CrearPedVtaVMS(DateTime fecha, string moneda, string condPago, string orgVtas, string canal,
            string sector, string codCliente, string nroPed, string codDestMer, string codResPago, string motPedido,
            string funcionVE, string oficina, string vendedorSAP, string entFin, string grpVen, string flete, string recTecho,
            string seguro, string dscto, string porcentaje, List<string> lstLote, List<GenericBE> lstStatus
            , string puestoExp, string nroDocReferencia);
        string crearPedidoAnticipo(out string pNumPedido, PedidoBE pObjPedido);
        List<ValidacionStock> validacionStock(string pNumPedido);
    }
}
